package 刷题.leedcode21;
//升序合并两个升序链表
//迭代
import java.util.List;

public class Solution1 {
    public ListNode mergeTwoLists(ListNode list1,ListNode list2){
        //若其中一个链表为空，则返回另外一个链表
        //若两个链表都不为空，则定义两个指针分别指向两个链表
        //取两个指针位置元素进行大小比较，小的元素进入新的链表，大的元素与另外一个链表下一个元素进行比较
        ListNode prehead = new ListNode(-1);//设置一个哨兵结点,用于存储新链表
        ListNode prev = prehead;
        while(list1 != null && list2 != null){
            if(list1.val <= list2.val){
                prev.next = list1;
                list1 = list1.next;
            }else{
                prev.next = list2;
                list2 = list2.next;
            }
            prev = prev.next;
        }
        //此时还有一个链表未被合并完,以及其中一个链表为空的情况
        //判断list1是否为空，为空，则list2未合并完
        prev.next = list1 ==null ? list2 :list1;
        return prehead.next;
    }
}
